﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
using QuanLyQuanCafe.BusinessObject;
using QuanLyQuanCafe.DataAccess;

namespace QuanLyQuanCafe.BusinessLogic
{
    class HoaDonBL
    {
        KetNoiDuLieu connect = new KetNoiDuLieu();
        public DataTable DSHoaDon()
        {
            string sql = "SELECT * FROM HOADON";
            return connect.LayDanhSachDuLieu(sql);
        }
        public DataTable DSHoaDon(string value)
        {
            string sql = "SELECT * FROM HOADON WHERE MaHD = '"+value+"'";
            return connect.LayDanhSachDuLieu(sql);
        }
        //Phan Cua VuVD        
        public DataTable LayDanhSachTraCuuHoaDon()
        {
            string sql = "SELECT MaHD, MaBan, Ngay, TongTien FROM HOADON";
            return connect.LayDanhSachDuLieu(sql);
        }

        //public DataTable LayKetQuaDanhSachTraCuuHoaDonBinhThuong(string maHD, string maBan)
        //{
        //    string sql = string.Format("SELECT MaHD, MaBan, Ngay, TongTien FROM HOADON WHERE MaHD LIKE '%{0}%' AND MaBan LIKE '%{1}%'", maHD, maBan);
        //    return connect.LayDanhSachDuLieu(sql);
        //}

        //public DataTable LayKetQuaDanhSachTraCuuHoaDonTheoNgay(string ngay, int flag)
        //{
        //    string sql = "";
        //    if (flag == 1)
        //        sql = string.Format("SELECT MaHD, MaBan, Ngay, TongTien FROM HOADON WHERE  DATEPART(DAY, [Ngay]) LIKE '%{0}%'", ngay);
        //    if(flag == 2)
        //        sql = string.Format("SELECT MaHD, MaBan, Ngay, TongTien FROM HOADON WHERE  DATEPART(MONTH, [Ngay]) LIKE '%{0}%'", ngay);
        //    if (flag == 3)
        //        sql = string.Format("SELECT MaHD, MaBan, Ngay, TongTien FROM HOADON WHERE  DATEPART(YEAR, [Ngay]) LIKE '%{0}%'", ngay);
            
        //    return connect.LayDanhSachDuLieu(sql);
        //}

        public DataTable LayKetQuaDanhSachTraCuuHoaDon(string maHD, string maBan, string ngay, string thang, string nam)
        {
            string sql = string.Format("SELECT MaHD, MaBan, Ngay, TongTien FROM HOADON"
                + " WHERE MaHD LIKE '%{0}%' AND MaBan LIKE '%{1}%' AND DATEPART(DAY, [Ngay]) LIKE '%{2}%' AND DATEPART(MONTH, [Ngay]) LIKE '%{3}%' AND DATEPART(YEAR, [Ngay]) LIKE '%{4}%'", maHD, maBan, ngay, thang, nam);
            return connect.LayDanhSachDuLieu(sql);
        }

        public DataTable LayKetQuaDanhSachBaoCaoThang(string thang, string nam)
        {
            string sql = string.Format("SELECT MaHD, MaBan, TongTien FROM HOADON"
                + " WHERE DATEPART(MONTH, [Ngay]) = '{0}' AND DATEPART(YEAR, [Ngay]) = '{1}'", thang, nam);
            return connect.LayDanhSachDuLieu(sql);
        }

        //Phan Cua VuVD

        public int Count()
        {
            string sql = "SELECT * FROM HOADON";
            DataTable table = connect.LayDanhSachDuLieu(sql);
            return table.Rows.Count;
        }
        //Tình trạng = 0: chưa thanh toán
        //Tình trạng =1; đã thanh toán
        public DataTable BanChuaTinhTien()
        {
            string sql = string.Format("SELECT * FROM HOADON WHERE TinhTrang = '0'");
            return connect.LayDanhSachDuLieu(sql);
        }
        public string GetMaHD(string value)
        {
            string sql = string.Format("SELECT MaHD FROM HOADON WHERE MaBan ='"+value+"' AND TinhTrang ='0'");
            DataTable dt =  connect.LayDanhSachDuLieu(sql);
            if(dt.Rows.Count>0)
                return dt.Rows[0][0].ToString();
            return "";
        }
        public float GetTongTien(string value)
        {
            string sql = string.Format("SELECT TongTien FROM HOADON WHERE MaHD ='" + value + "' AND TinhTrang ='0'");
            DataTable dt = connect.LayDanhSachDuLieu(sql);
            if (dt.Rows.Count > 0)
                return float.Parse(dt.Rows[0][0].ToString());
            return 0;
        }





        public DataTable CheckGoiMon(string value)
        {
            string sql = string.Format("SELECT * FROM HOADON WHERE TinhTrang= '0' AND MaBan = '"+value+"'");
            return connect.LayDanhSachDuLieu(sql);
           
        }

        public int GetMon(string value)
        {
            string sql = "SELECT MONAN.TenMon FROM MONAN, NHOMMON WHERE MONAN.MaNhom = NHOMMON.MaNhom AND NHOMMON.TenNhom = '" + value + "'";
            DataTable table = connect.LayDanhSachDuLieu(sql);
            return table.Rows.Count;
        }

        public bool CheckHoaDon(string value)
        {
            if (connect.KiemTraGiaTriTonTai("HOADON", "MaHD", value))
                return true;
            return false;
        }

        
        public bool ThemHD(HoaDonBO hoadonBO)
        {
            if (TestSave(hoadonBO))
            {
                string sql = string.Format("INSERT INTO HOADON (MaHD, MaBan, Ngay, TongTien, TinhTrang) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}')", hoadonBO.MaHD, hoadonBO.MaBan, hoadonBO.Ngay, hoadonBO.TongTien, hoadonBO.TinhTrang);
                if (connect.ExecuteQuery(sql))
                {
                    //MessageBox.Show("Thêm Món Thành Công. Món Đã Được Lưu Vào Hóa Đơn.", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return true;
                }
            }
            return false;
        }

        public bool ThemHDPhu(HoaDonBO hoadonBO)
        {
            if (TestSave(hoadonBO))
            {
                string sql = string.Format("INSERT INTO HOADON (MaHD, MaBan, Ngay, KhuyenMai, DenBu, PhiPhucVu, TongTien, TinhTrang) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}')", hoadonBO.MaHD, hoadonBO.MaBan, hoadonBO.Ngay, hoadonBO.KhuyenMai, hoadonBO.DenBu, hoadonBO.PhiPhucVu, hoadonBO.TongTien, hoadonBO.TinhTrang);
                if (connect.ExecuteQuery(sql))
                {
                    //MessageBox.Show("Thêm Món Thành Công. Món Đã Được Lưu Vào Hóa Đơn.", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return true;
                }
            }
            return false;
        }


        public bool SuaHD(HoaDonBO hoadonBO)
        {
            if (TestSave(hoadonBO))
            {
                string sql = string.Format("UPDATE HOADON SET MaBan = '{0}', Ngay = '{1}', TongTien='{2}' , TinhTrang='{3}'" + "WHERE MaHD = '{4}'", hoadonBO.MaBan, hoadonBO.Ngay, hoadonBO.TongTien,hoadonBO.TinhTrang, hoadonBO.MaHD);
                if (connect.ExecuteQuery(sql))
                {
                    //MessageBox.Show("Sửa Thành Công", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return true;
                }
            }
            return false;
        }

        public bool SuaTongTien(float value1, string value2)
        {
            string sql = string.Format("UPDATE HOADON SET TongTien='{0}'" + "WHERE MaHD = '{1}'", value1,value2);
            if (connect.ExecuteQuery(sql))
            {
                //MessageBox.Show("Sửa Thành Công", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return true;
            }
            
            return false;
        }

        public bool ChuyenHD(string value1, string value2)
        {
            string sql = string.Format("UPDATE HOADON SET MaBan='{0}'" + " WHERE MaBan ='{1}' AND TinhTrang ='0'", value2, value1);
            if (connect.ExecuteQuery(sql))
            {
                MessageBox.Show("Chuyển Bàn Thành Công", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return true;
            }
            return false;
        }

        public bool ThanhToanHD(string value1, string value2)
        {
            string sql = string.Format("UPDATE HOADON SET TinhTrang='{0}' WHERE MaHD = '{1}'", value1, value2);
            if (connect.ExecuteQuery(sql))
            {
                //MessageBox.Show("Thanh Toán Thành Công", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return true;
            }
            return false;
        }

        public bool ThanhToanHDPhu(string value1, string value2, string value3)
        {
            string sql = string.Format("UPDATE HOADON SET TinhTrang = '{0}', DenBu = '{1}' WHERE MaHD = '{2}'", value1, value2, value3);
            if (connect.ExecuteQuery(sql))
            {
                //MessageBox.Show("Thanh Toán Thành Công", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return true;
            }
            return false;
        }

        public bool XoaHD(string value)
        {
            string sql = string.Format("DELETE FROM HOADON WHERE MaHD = '" + value + "'");
            if (connect.ExecuteQuery(sql))
            {
                //MessageBox.Show("Xóa Thành Công", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return true;
            }
            return false;
        }
        public bool XoaMon(string value)
        {
            string sql = string.Format("DELETE FROM HOADON WHERE MaMon = '" + value + "'");
            string sql2 = string.Format("DELETE FROM CT_HOADON WHERE MaMon = '" + value + "'");
            if (connect.ExecuteQuery(sql) && connect.ExecuteQuery(sql2))
            {
                //MessageBox.Show("Xóa Thành Công", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return true;
            }
            return false;
        }

        public bool TestSave(HoaDonBO hoadonBO)
        {
            if (hoadonBO.MaHD.Equals(""))
            {
                MessageBox.Show("Mã Hóa Đơn Không Hợp Lệ", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            
            if (hoadonBO.TongTien < 0)
            {
                MessageBox.Show("Lỗi Xảy Ra", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }



            return true;
        }
    }
}
